package com.example.todolist.service.impl;

import com.example.todolist.exception.TodoNotFoundException;
import com.example.todolist.mapper.TodoMapper;
import com.example.todolist.model.Todo;
import com.example.todolist.service.ITodoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Slf4j
@Service
public class TodoServiceImpl implements ITodoService {
    
    @Autowired
    private TodoMapper todoMapper;

    @Override
    public List<Todo> getAllTodos() {
        log.info("正在查询所有待办事项");
        return todoMapper.selectList(null);
    }

    @Override
    public Todo createTodo(Todo todo) {
        log.info("正在创建新的待办事项: {}", todo.getTitle());
        todoMapper.insert(todo);
        return todo;
    }

    @Override
    public Todo updateTodo(Long id, Todo todo) {
        log.info("正在更新待办事项, ID: {}", id);
        Todo existingTodo = todoMapper.selectById(id);
        if (existingTodo == null) {
            throw new TodoNotFoundException("未找到ID为 " + id + " 的待办事项");
        }
        
        existingTodo.setTitle(todo.getTitle());
        existingTodo.setCompleted(todo.isCompleted());
        
        todoMapper.updateById(existingTodo);
        return existingTodo;
    }

    @Override
    public void deleteTodo(Long id) {
        log.info("正在删除待办事项, ID: {}", id);
        if (todoMapper.deleteById(id) == 0) {
            throw new TodoNotFoundException("未找到ID为 " + id + " 的待办事项");
        }
    }
} 